
# 02在闭包中修改外部函数的变量
# nonlocal 关键字

def say_hello(name):

    print(name)
    def say(msg):
        nonlocal name # 告诉解释器，name是外部函数的变量
        name = '李四'  # 在内部函数中，定义了一个局部变量而已。
        print(f'对着{name}说{msg}')
    print(name)
    say('hello')
    print(name) # 李四 传入的张三被改成李四了
    return say


if __name__ == '__main__':
    sa = say_hello('张三')
    # sa('hello')
    # sa('你在家吗？')
